perm filename ITT.1[ITT,WD] blob sn#203694 filedate 1976-02-21 generic text, type T, neo UTF8
\|\\M0basl30;\M2germ35;\M9fix20;\←=90;\ε\`'10004;\F0\;

1.	Introduction

\J	Since its beginnings over 2000 years ago,  cryptography  has  progressed
from  a simple adjunct to writing into an elaborate and highly mathematical art.
Advances in computing machinery and accompanying developments in the  theory  of
computation  have brought us today to the brink of a revolution in cryptography.
On the one hand, the decreasing cost  of  computation  has  brought  high  grade
cryptography  into a price range where its addition would not greatly affect the
cost of a computer terminal.  And, on the other hand,  theoretical  advances  in
computer science, most notably in computational complexity, promise to allow the
development of provably secure systems thereby changing the art to a science. In
addition  the  development  of  large  computer  and  communication networks has
compounded the key distribution problem which was already present  in  classical
cryptgraphy.   We  propose that it is possible to eliminate this problem through
use of public key cryptosystems in which all key distribution can be  cone  over
isecure  channels.   These developments are still in an embroyonic stage and are
presented as open research problems.
	While  the  new  systems suggested in this paper are radically different
from conventional systems, in retrospect,  our  suggested  developments  can  be
viewed  as  the  natural  culmination  of  trends  which  have  been  visible in
cryptography during the last several centuries.
	As  an example of one such trend, early cryptosystems such as the Caesar
cipher (in which each letter is replaced by the one three places further on,  so
A  is  carried  to  D,  B  to  E, etc.) required that the general system be kept
secret.  During the Renaissance the distinction between a general system  and  a
specific  key  allowed  the  general system to be compromised, for example as by
theft of a cryptographic device, without compromising future messages enciphered
in  new  keys.  Then, about 1960, cryptosystems were developed which were deemed
strong  enough  to  resist  a  cryptanalytic  attack  even  when  the  plaintext
(unenciphered)  messages  corresponding  to  previous  cryptograms  were  known,
thereby eliminating the burdon of keeping old messages secret.   Each  of  these
developments  decreased the portion of the system which had to be protected from
public knowledge, and allowed more transparent use of the system.
	Today,  one  of  the  major  barriers  to  use  of cryptography in large
computer or communication networks is the secrecy of the key and  the  resulting
key distribution problem.  Two users who wish to establish contact for the first
time must either use an external, secure channel  such  as  registered  mail  to
exchange  keys;  or,  if each user has a distinct key for communicating with the
network and if the network can be trusted, they can  communicate  securely  with
the  network,  and  therefore  with  each  other.[,,,]  However, it appears that
securing the network is a formidable task.
	We  suggest  that  as  the  culmination  of this trend toward decreasing
secrecy it may be  possible  to  eliminate  the  secrecy  of  the  key  used  in
encryption,  and  yet  to  preserve  the  privacy  of the communication. This is
accomplished by each user having a pair of keys E and D.    E is an  enciphering
key and is public information. D is the corresponding deciphering key, and while
kept secret, need never be communicated, thereby  eliminating  the  need  for  a
secure  key  distribution channel.  While D is, in principle, computable from E,
the cost of this  computation  is  infeasibly  high.   We  shall  use  the  term
_computationally  infeasible_  to  refer  to  tasks which requrire an impossibly
large number (e.g., 10↑100) of operations.    Thus,  the  terms  computationally
infeasible and uncomputable are, in practice, synonymous.

	Later  sections  explore  public key cryptosystems in greater detail and
give arguments which support their existence.


	A related problem treated in this paper is that of authentication.  Here
we  suggest  that  oneway  IFF authentication systems may exist.  These combine
desirable features of oneway login procedures (described later in this section)
and  desirable  features  of  IFF  systems (described in section 2).   These two
authentication procedures protect against different threats.     An  IFF  system
prevents  an  eavesdropper  from  using  a  previously  overheard authentication
exchange to falsely pose as a legitimate user of the system.    IFF  systems  do
not,  however,  prevent  the system (or someone who has stolen system data) from
forging  a  login,  since  both  the  user  and  the  system  possess  identical
authentication  keys.    oneway  login procedures have a different goal.   They
prevent knowledge of the system's  authetication  keys  from  being  misused  to
impersonate a user.
	A oneway IFF system would protect against both of these  threats.   The
system would issue a time dependent challenge, so no challenge is ever repeated.
The user responds to the challenge with a response which is a function  of  both
the   challenge   and  a  secret  authentication  key.    The  system  possesses
information related to the secret key which allows it to verify the authenticity
of  the  response.    But it is computationally infeasible for the system to use
this information to calculate the correct response to its own  challenge.   Thus
an  eavesdropper  cannot use a previously overheard response because it was only
valid at the time it was issued, and even if he were to steal the authentication
tables  used  by  the  system  he  could not use this data to calculate a proper
response.
	Both public key cryptosystems and oneway IFF systems may at first glace
appear to be logical impossibilities. In an effort to  offset  this  feeling  we
will  now pose another problem with somewhat the same flavor, but which has been
successfully solved in practice.
	Consider the login problem in a multiuser computer system.  When setting
up his account the user chooses on a password which is entered into the system's
password  directory.   Each  time he logs in, the user is asked to again provide
his password.  By keeping this password  secret  from  all  other  users  forged
logins are prevented.  This, however, makes it vital to preserve the security of
the password directory since the information it  contains  would  allow  perfect
impersonation  of  any  user.       The  problem is further compounded if system
operators have legitimate reasons for accessing the directory.    Allowing  such
legitimate accesses, but preventing all others is next to impossible
	This leads to the apperently impossible  requirement  for  a  new  login
procedure  capable  of  judging  the  authenticity of passwords without actually
knowing them.     While again appearing to  be  a  logical  impossibility,  this
proposal  is easily satisfied.  When the user first enters his passowrd, PW, the
computer automatically and transparently computes a function  f(PW)  and  stores
this,  not  PW,  in  the  password  directory.     At each successive login, the
computer calculates f(X), where X is the proferred password, and  compares  f(X)
with  f(PW).   If  and  only  if  they  are equal, the user is accepted as being
authentic. Since  the  function  f  must  be  calculated  once  per  login,  its
computation  time  must  be  small.  A million instructions (with an approximate
cost of $0.10) seems to be a reasonable limit on this computation.  If we  could
ensure,   however,  that  calculation  of  f\∩-1\⊗  required  10\∩30\⊗  or  more
instructions, someone who had  subverted  the  system  to  obtain  the  password
directory could not in practice obtain PW from f(PW), and could thus not perform
an unauthorized login.
	Note  that  we  assume  that the function f(.) is public information, so
that it  is  not  ignorance  of  f(.)  which  makes  calculation  of  f\∩-1\⊗(.)
difficult.


	Functions  with  this  property  were  first  suggested for use in login
procedures by R. M. Needham [] and are discussed in two recent papers [,].    Up
to  now  they  have  been called oneway ciphers, but we prefer the term oneway
function  to  avoid  confusion  with  other  entities   such   as   public   key
cryptosystems.    With  this  terminology,  a  function f is oneway if, for any
argument x in the domain it is easy to compute the corresponding value y = f(x),
yet  for almost all y in the range it is computationally infeasible to solve the
equation y = f(x) for a suitable argument x.    It is  very  important  to  note
that  we  are  defining  a function which is not invertible from a computational
point of view, but whose  non-invertibility  is  entirely  different  from  that
normally   encountered  in  mathematics.    A  function  f  is  normally  called
"non-invertible" when the inverse of a point y = f(x) is not unique, (ie.  there
exist distinct points x1 & x2 such that f(x1) = f(x2) ).  We emphasize that this
is not the sort of inversion difficulty which we require. Rather, we insist that
it  must  be  overwhelmingly  difficult  given  a  value y and knowledge of f to
calculate any x whatsoever with the property that f(x) = y
	Indeed,  if f is non-invertible in the usual sense, it may make the task
of finding an inverse image easier.  In the extreme, if f(x) ≡ y\∪0\⊗ for all  x
in  the  domain  then  the  range  of  f  is  {y\∪0\⊗}, and we can take any x as
f↑-1(y0).   It is therefore desirable that f not be  too  degenerate.   A  small
degree  of  degeneracy is tolerable and, as discussed later, is probably present
in the most promising class of oneway functions.
	Polynomials  are  an elementary example of oneway functions. It is much
harder to find a root x\∪0\⊗ of the polynomial equation p(x) = y than it  is  to
evaluate  the  polynomial  p(x)  at  x  =  x\∪0\⊗.  oneway  functions and their
theoretical  basis  are  discussed  at  greater  length  in  section  4.   Their
introduction  at  this  point  is intended to diminish skepticism concerning the
newly suggested public key cryptosystems and oneway IFF systems.
	Section 3 defines six general problem areas and a number of subproblems.
The relationships among these problems are also discussed.  Section 4 is devoted
to  a  study of oneway functions and section 5 to a discussion of computational
complexity and its cryptographic applications.
	To  establish  notation,  in section 2, we will first review the flow of
information in conventional cryptographic and IFF systems.